有哪些基于软件的保护技术
典型的基于软件的保护技术包含以下五类:
基于注册验证的版权控制:注册信息一般基于软件使用者的用户信息生成,可以是一串序列号或注册码,也可以是一个授权文件或其他的存在形式。在验证比较严格的情况下,用户信息应该包含标志用户唯一性且不可复制的信息,可以采用的此类信息包括计算机的CPU、硬盘等关键部件的硬件序列号,计算机的IP地址、MAC地址等。
反逆向工程分析:反逆向分析的目的,就是要尽量隐藏提示信息和注册验证的代码。可以采用的手段包括代码混淆、设置代码陷阱、程序加壳等。代码混淆。将程序中的变量名、函数名用一些无规则字符替代,将对单个函数的调用拆解成对多个函数的复杂调用,达到混淆原始代码的目的,这样破解者对验证逻辑的定位变得困难,即使破解者反编译了原程序,也不能从中轻易理解原程序运行的逻辑。代码陷阱。在程序文件中人为设置一些无用代码或可能引起反编译程序错误理解的代码,使反编译程序进入误区。对于纯粹的工具分析,代码陷阱能起到很好的保护作用。一般采取方法有设置大循环、废指令法和程序自生成技术。程序加壳。加壳后原程序被加密或压缩保存在壳程序中,在程序运行时才被还原,可以有效防范静态分析。常用的反静态分析工具主要有以下几种。混淆器有yGuard(Java语言)、JODE(Java语言)、Dotfuscator(.NET)等。加壳工具有ASPack、UPX、PECompact、ASProtect、DBPE等。
反动态跟踪分析:反动态分析主要的技术是反调试,即在程序运行中自动检测调试器的存在并采取相应措施,如抛系统异常、停止调试进程、重启、死机等,以阻止调试器的运行,使得对程序的分析和修改无从入手。
数据校验:反静态分析和反动态分析的技术给通过修改可执行程序来实施入口破解的行为带来很大的障碍,但是仍然不能完全防范对程序的修改,因此有必要在软件运行过程中进行文件数据完整性校验。
软件加壳:壳是计算机软件中一段专门负责保护软件不被非法修改或反编译的程序,它先于软件原程序运行并拿到控制权,进行一定处理后再将控制权转交给原程序,实现保护软件的任务。加壳后的程序能够有效地防范静态分析,并且增加动态分析的难度。